home *** CD-ROM | disk | FTP | other *** search
/ Plug-In Power Pack for Netscape Communicator / Plug-In Power Pack for Netscape Communicator.iso / plugins / dataviews / include / dvsetup.h < prev    next >
C/C++ Source or Header  |  1997-05-08  |  5KB  |  155 lines

  1. /*
  2. set up the jump tables for sun ( different on different hosts)
  3. */
  4. #ifndef _DVSETUP_H
  5. #define _DVSETUP_H
  6.  
  7.  
  8. /*
  9.  * This provides the correct format of argument list (declarator) for
  10.  * the init_fun parameter list permitting it to be compiled by any of
  11.  * C++ and ANSI C, __STDC__, and traditional K&R C, without excessive
  12.  * duplication of macros for these three langauges.
  13.  */
  14. #ifdef __STDC__
  15. #define def_initfun_declarator \
  16.   (ENTRY_PT *table)
  17. #else
  18. #define def_initfun_declarator \
  19.   (table) \
  20.        ENTRY_PT *table;
  21. #endif
  22.  
  23.  
  24.  
  25. /* def_init_table() and def_entry_table() are for up to release 8.0 */
  26.  
  27. #ifdef DV_VD_HAS_PROTOS
  28. #define def_init_protos        /* NOOP */
  29. #else
  30. #define def_init_protos LOCAL void initial_draw V_P_ ((ADDRESS dgp));\
  31.   LOCAL void update_draw V_P_ ((ADDRESS dgp));\
  32.   LOCAL void cant_draw V_P_ ((ADDRESS dgp));\
  33.   LOCAL void cleanup_allocs V_P_ ((SAVED_DATA *sdp));\
  34.   LOCAL BOOLPARAM query_df V_P_ ((ADDRESS dgp, int flag, \
  35.                   ADDRESS inarg, ADDRESS outarg));
  36. #endif
  37.  
  38. #define def_init_table(table_name,init_fun_ptr,init_fun) \
  39.   def_init_protos \
  40.   LOCAL ENTRY_PT table_name[V_DFTABLE_SIZE];\
  41.   ENTRY_PT *init_fun V_P_((ENTRY_PT *table));\
  42.   ENTRY_PT *init_fun def_initfun_declarator \
  43.   { \
  44.     if ( table == (ENTRY_PT*) 0 )\
  45.       table = table_name;\
  46.     table[0] = (ENTRY_PT) initial_draw;\
  47.     table[1] = (ENTRY_PT) cleanup_allocs;\
  48.     table[2] = (ENTRY_PT) update_draw;\
  49.     table[3] = (ENTRY_PT) cant_draw;\
  50.     table[4] = (ENTRY_PT) query_df;\
  51.     table[5] = (ENTRY_PT) NULL;\
  52.     table[6] = (ENTRY_PT) NULL;\
  53.     table[7] = (ENTRY_PT) NULL;\
  54.     table[8] = (ENTRY_PT) NULL;\
  55.     table[9] = (ENTRY_PT) NULL;\
  56.     return table;\
  57.   }\
  58.   GLOBALREF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *))
  59.  
  60. #define def_entry_table(table_name,init_fun_ptr,init_fun)\
  61.   def_init_table(table_name,init_fun_ptr,init_fun);\
  62.   GLOBALDEF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *)) = init_fun; 
  63.  
  64.  
  65.  
  66. /*
  67.  * def_init_table1() is for those systems where DataViews has both dynamic
  68.  * and static linking capability under release 9.0 onwards - the use of a
  69.  * VD*G.c module will also be required under release 9.5 onward.
  70.  */
  71. #ifdef DV_VD_HAS_PROTOS
  72. #define def_init_protos1        /* NOOP */
  73. #else
  74. #define def_init_protos1 LOCAL void cleanup_allocs V_P_ ((SAVED_DATA *sdp));\
  75.   LOCAL BOOLPARAM query_df V_P_ ((ADDRESS dgp, int flag, \
  76.                   ADDRESS inarg, ADDRESS outarg));\
  77.   LOCAL BOOLPARAM setup_for_draw V_P_ ((ADDRESS dgp));\
  78.   LOCAL BOOLPARAM draw_context V_P_ ((ADDRESS dgp, RECTANGLE * vp, \
  79.                                       RECTANGLE ** obsvps, \
  80.                                       int draw_flag));\
  81.   LOCAL BOOLPARAM take_data V_P_ ((ADDRESS dgp));\
  82.   LOCAL BOOLPARAM draw_data V_P_ ((ADDRESS dgp, RECTANGLE * vp, \
  83.                                    RECTANGLE ** obsvps, \
  84.                                    int draw_flag));\
  85.   LOCAL BOOLPARAM recv_message V_P_ ((ADDRESS dgp, int flag, \
  86.                                       ADDRESS indata));
  87. #endif
  88.  
  89. #define def_init_table1(table_name,init_fun_ptr,init_fun)\
  90.   def_init_protos1 \
  91.   LOCAL ENTRY_PT table_name[V_DFTABLE_SIZE];\
  92.   ENTRY_PT *init_fun V_P_ ((ENTRY_PT *table));\
  93.   ENTRY_PT *init_fun def_initfun_declarator \
  94.   { \
  95.     if( table == (ENTRY_PT*) 0 ) \
  96.       table = table_name;\
  97.     table[0] = (ENTRY_PT) NULL;\
  98.     table[1] = (ENTRY_PT) cleanup_allocs;\
  99.     table[2] = (ENTRY_PT) NULL;\
  100.     table[3] = (ENTRY_PT) NULL;\
  101.     table[4] = (ENTRY_PT) query_df;\
  102.     table[5] = (ENTRY_PT) setup_for_draw;\
  103.     table[6] = (ENTRY_PT) draw_context;\
  104.     table[7] = (ENTRY_PT) draw_data;\
  105.     table[8] = (ENTRY_PT) take_data;\
  106.     table[9] = (ENTRY_PT) recv_message;\
  107.     return table;\
  108.   } \
  109.   GLOBALREF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *))
  110.  
  111.  
  112. /*
  113.  * def_entry_table1() is for those systems where DataViews has only static
  114.  * linking capability under release 9.0 onwards and for systems running
  115.  * Windows NT
  116.  */
  117.  
  118. #ifndef WIN32
  119. #define def_entry_table1(table_name,init_fun_ptr,init_fun) \
  120.   def_init_table1(table_name,init_fun_ptr,init_fun);\
  121. GLOBALDEF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *)) = init_fun;
  122. #else
  123. #define def_entry_table1(table_name,init_fun_ptr,init_fun) \
  124.   def_init_protos1 \
  125.   LOCAL ENTRY_PT table_name[V_DFTABLE_SIZE];\
  126.   ENTRY_PT *init_fun V_P_ ((ENTRY_PT *table));\
  127.   ENTRY_PT *init_fun def_initfun_declarator \
  128.   { \
  129.     if( table == (ENTRY_PT*) 0 ) \
  130.       table = table_name;\
  131.     table[0] = (ENTRY_PT) NULL;\
  132.     table[1] = (ENTRY_PT) cleanup_allocs;\
  133.     table[2] = (ENTRY_PT) NULL;\
  134.     table[3] = (ENTRY_PT) NULL;\
  135.     table[4] = (ENTRY_PT) query_df;\
  136.     table[5] = (ENTRY_PT) setup_for_draw;\
  137.     table[6] = (ENTRY_PT) draw_context;\
  138.     table[7] = (ENTRY_PT) draw_data;\
  139.     table[8] = (ENTRY_PT) take_data;\
  140.     table[9] = (ENTRY_PT) recv_message;\
  141.     return table;\
  142.   } \
  143. GLOBALDEF ENTRY_PT *(*init_fun_ptr) V_P_ ((ENTRY_PT *)) = init_fun;
  144. #endif
  145.  
  146.  
  147. /* load_entry_table() and load_entry_table1() are obsolete */
  148.  
  149. #define load_entry_table(table_name,init_fun)  /* NOOP */
  150.  
  151. #define load_entry_table1(table_name,init_fun) /* NOOP */
  152.  
  153.  
  154. #endif /* _DVSETUP_H */
  155.